import voca from 'voca'
import axios from 'axios'
import gmconfig from '@/api/gmconfig.json'
import { useCommonStore } from '@/stores/common'

export function getRequest() {
  const store = useCommonStore()

  const request = axios.create({
    baseURL: gmconfig.urlApi, // config 改存在 vuex 中
    timeout: 20000, // 超时时间
    method: 'post', // 默认都用post方法
    headers: { 'Content-Type': 'application/json;charset=UTF-8' }
  })

  // 请求拦截
  request.interceptors.request.use(
    (config) => {
      const token = store.getToken() // 令牌通过 getter 读取，会检查过期
      console.log('请求拦截, token：', token)
      if (!voca.isBlank(token)) {
        // 如果存在令牌，则自动附加令牌
        config.headers.Authorization = 'Bearer ' + token
      }
      return config
    },
    (error) => {
      console.log('axios error ' + error)
      Promise.reject(error)
    }
  )

  // 应答拦截
  request.interceptors.response.use(
    (response) => {
      // 仅仅返回 response 的数据部分
      return response.data
    },
    (error) => {
      //响应错误处理
      console.log('应答拦截错误')
      console.log(error)
      return Promise.reject(error)
    }
  )

  return request
}
